package a.codetop.笔试框架.天王;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class 子集_有重复元素 {

    static int[] p={1,1,2};
    static int[] vis;

    public static void main(String[] args) {
        vis=new int[p.length];
        Arrays.sort(p);//排序
        ziji(0);
        res.add(new ArrayList<>());//子集含[]空集
        //
        System.out.println(res);
    }

    static List<List<Integer>> res = new ArrayList<>();
    static List<Integer> tmp = new ArrayList<>();

    private static void ziji(int ci) {
        if(ci==p.length)return;
        for (int i = ci; i < p.length; i++) {
            //跳过第二次出现的重复的元素,并且这个元素必须保证用过
            if(i>=1 && p[i-1]==p[i] && vis[i-1]==0)continue;
            //大改:ci+1配合全排列的vis
            tmp.add(p[i]);vis[i]=1; res.add(new ArrayList<>(tmp));
            ziji(i+1);
            tmp.remove(tmp.size()-1);vis[i]=0;
        }
    }

}
